This invention relates to serial communications, and more particularly, to serial communications systems that use a serial communications protocol having efficient cyclic redundancy checking capabilities.
Serial communications formats are often used in modern electronics systems. Serial communications can be faster than parallel communications, use fewer pins, and, particularly when differential signaling schemes are used, can have higher noise immunity.
It can be challenging to handle serial data streams at high data rates (e.g., at data rates above several Gbps). As a result, it is often advantageous to support high-speed serial data communications using multiple smaller serial data paths (lanes) operating in parallel. Using this approach, large amounts of data can be transmitted from a transmitter to a receiver using relatively modest resources.
Robust serial links often use error checking schemes such as the cyclic redundancy checking (CRC) error checking scheme. A CRC code is computed for each block of data before transmission over the serial link. The CRC code is transmitted to the receiver from the transmitter. At the receiver, a new CRC code is computed based on the received data to determine whether the transmitted data has been corrupted. The receiver compares the value of the newly-computed CRC code to the value of the CRC code that was originally computed at the transmitter. If the original CRC code and the newly-computed CRC code match, the receiver can process the received data normally. If the original CRC code and the newly-computed CRC code do not match, the receiver can conclude that an error has arisen during the data transmission process.
In serial links with multiple lanes, it can be difficult to efficiently implement CRC functions. As a result, more resources are consumed on integrated circuits that support multilane serial communications with CRC capabilities than is desired. It would therefore be desirable to be able to provide ways to implement CRC operations more efficiently for serial links with multiple lanes.